\documentclass[UTF8]{ctexart}
\usepackage{geometry, CJKutf8}
\geometry{margin=1.5cm, vmargin={0pt,1cm}}
\setlength{\topmargin}{-1cm}
\setlength{\paperheight}{29.7cm}
\setlength{\textheight}{25.3cm}

% useful packages.
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{enumerate}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{fancyhdr}
\usepackage{layout}
\usepackage{listings}
\usepackage{float, caption}

\lstset{
    basicstyle=\ttfamily, basewidth=0.5em
}

% some common command
\newcommand{\dif}{\mathrm{d}}
\newcommand{\avg}[1]{\left\langle #1 \right\rangle}
\newcommand{\difFrac}[2]{\frac{\dif #1}{\dif #2}}
\newcommand{\pdfFrac}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\OFL}{\mathrm{OFL}}
\newcommand{\UFL}{\mathrm{UFL}}
\newcommand{\fl}{\mathrm{fl}}
\newcommand{\op}{\odot}
\newcommand{\Eabs}{E_{\mathrm{abs}}}
\newcommand{\Erel}{E_{\mathrm{rel}}}

\begin{document}

\pagestyle{fancy}
\fancyhead{}
\lhead{聂宇潇, 3220101556}
\chead{数据结构与算法第五次作业}
\rhead{Nov.4th, 2024}

\section{修改后remove函数的实现方法}

1.首先判断节点是否为空，如果为空则直接返回

2.查找要删除的元素，通过比较x与当前节点元素，递归的在左子树或者右子树中查找x。

3.找到元素后，如果只有一个子节点那么用这个子节点替换t，并删除t。如果有两个子节点，
使用detachMin函数找到右子树的最小节点并用其来替换被删除的t。

4.detachMin函数用于找到并删除子树中的最小节点，并返回被删除的节点.

\section{测试程序的设计思路}

建立一个树，并依次插入30，20，40，10，25，35，45，5，15。并输出

删除元素20，10，45.并输出。

\section{测试的结果}

预计的输出结果为：
\begin{verbatim}
    Initial tree:
    5
    10
    15
    20
    25
    30
    35
    40
    45
    Tree after removing 30, 10, and 45:
    5
    15
    20
    25
    35
    40
\end{verbatim}

与实际结果相符，说明新的remove函数实现了应有的功能。

\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
